package cn.aopmin.java.api.util.diy;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * 日期时间工具类
 * @author 白豆五
 * @since 2025/1/29
 */
public class DateTimeUtils {

    /**
     * 标准时间格式
     */
    private static final String STANDARD_TIME_FORMAT = "HH时mm分ss秒";

    /**
     * 标准日期格式
     */
    private static final String STANDARD_DATE_FORMAT = "yyyy年MM月dd日";

    /**
     * 标准日期时间格式
     */
    private static final String STANDARD_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";



    private DateTimeUtils() {}


    /**
     * 计算两个时间的差值
     * @param startTime
     * @param endTime
     * @return 时间差值
     */
    public static long calculateTime(long startTime, long endTime) {
        if (startTime>endTime) {
           throw  new RuntimeException("参数非法");
        }
        return endTime - startTime;
    }

    /**
     * 将日期对象按照标准的日期格式转换为日期字符串字符串
     * @param date
     * @return
     */
    public static  String date2String(Date date) {
        DateFormat dateFormat = new SimpleDateFormat(STANDARD_DATE_TIME_FORMAT);
        return dateFormat.format(date);
    }

    /**
     * 将日期字符串按照指定日期格式转换为日期对象
     * @param source 日期字符串
     *  @param pattern  日期格式
     * @return 日期对象
     */
    public static  Date dateStrToDateObj(String source, String pattern) {
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        Date parse = null;
        try {
            parse = dateFormat.parse(source);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return parse;
    }

    /**
     * 获取当前时间
     * @return
     */
    public static String getCurrentTime() {
        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(STANDARD_TIME_FORMAT);
        LocalTime localTime = LocalTime.now();
        return localTime.format(dateFormat);
    }

}